<?php
session_start();

class LoginHandler {
	
	//Privat sträng för LoginSession
	private $LoginSession = "LoginSession";
	private $db = NULL;
        
    public function __construct(Database $db) {
    	$this->db =$db;
    }
	

	//Kollar om användaren är inloggad
	public function IsLoggedIn() 
	{
		if (isset($_SESSION[$this->LoginSession]))
		{
			return TRUE;	
		}		
	}

	//Loggar in användaren
	public function DoLogin($userName, $password) 
	{
		$sql = "SELECT userId FROM user WHERE name = ? AND password = ?";
		
		$stmt = $this->db->Prepare($sql);
		
		$stmt->bind_param("ss", $userName, $password);
							
		$ret = $this->db->SelectSingleValue($stmt); 
		 
		if($ret != 0)
		{
			$_SESSION[$this->LoginSession] = $ret;
			return TRUE;		 	
		}	
		
		return FALSE;
	}
	
	//Loggar ut användaren
	public function DoLogout() 
	{	
		unset($_SESSION[$this->LoginSession]);
	}
	
	//TESTFUNKTION
	public function Test() 
	{
		//Loggar ut
		$this->DoLogout();
		
		//Testar IsLoggedIn
		if ($this->IsLoggedIn() == TRUE) 
		{
		  	echo "Fel: 'IsLoggedIn' Användare är fortfarande inloggad.";
			return FALSE;
		} 
								
		//Testar DoLogin med felaktigt anv-namn & lösenord.
		if ($this->DoLogin("wrongUsername","wrongPass") == TRUE) 
		{
		  	echo "Fel: 'DoLogIn' Användaren kunde logga in med felaktiga uppgifter.";
			return FALSE;
		}
					
		//Testar DoLogin med felaktigt lösenord.
		else if ($this->DoLogin("userOne","wrongPass") == TRUE) 
		{
		  	echo "Fel: 'DoLogIn' Användaren kunde logga in med felaktigt lösenord.";
			return FALSE;
		}	
		
		//Testar DoLogin med korrekta uppgifter. Vi ska loggas in.					
		else if ($this->DoLogin("adam","123456") == FALSE) 
		{
		  	echo "Fel: 'DoLogIn' Användaren kunde inte logga in med korrekta uppgifter.";
			return FALSE;
		}	
						
		//Testar om vi är inloggade.
		if ($this->IsLoggedIn() == FALSE) 
		{
		  	echo "Fel: 'IsLoggedIn' Användaren loggades inte in";
			return FALSE;
		}
				
		//Loggar ut.
		$this->DoLogout();		
		
		//Alla tester är OK
		return TRUE;	
				
	}				
	
}

?>
  